package com.butang.code.weeklyMatch;

import org.junit.Test;

/**
 * ClassName: LeetCode100242
 * Package: com.butang.code.weeklyMatch
 * Description:
 *
 * 给你一个字符串 s 和一个整数 k 。
 *
 * 定义函数 distance(s1, s2) ，用于衡量两个长度为 n 的字符串 s1 和 s2 之间的距离，即：
 *
 * 字符 'a' 到 'z' 按 循环 顺序排列，对于区间 [0, n - 1] 中的 i ，计算所有「 s1[i] 和 s2[i] 之间 最小距离」的 和 。
 * 例如，distance("ab", "cd") == 4 ，且 distance("a", "z") == 1 。
 *
 * 你可以对字符串 s 执行 任意次 操作。在每次操作中，可以将 s 中的一个字母 改变 为 任意 其他小写英文字母。
 *
 * 返回一个字符串，表示在执行一些操作后你可以得到的 字典序最小 的字符串 t ，且满足 distance(s, t) <= k 。
 *
 * @Author BuTang
 * @Create 2024/4/7 11:13
 * @Version 1.0
 */

// todo 未完成
public class LeetCode100242 {
    public static void main(String[] args) {
        String s = "abc";
        int k = 1 ;
//        getSmallestString(s,k);
        getSmallestString("zbbz",3);
    }

    public static String getSmallestString(String s, int k) {
        if (k == 0){
            return s;
        }

        // 需要满足条件distance("ab", "cd") == 4 ，且 distance("a", "z") == 1 。
        // 字典序最小的字符串:以 aaa 开始，然后从最后一个开始加，使得 distance = k

        // a->z循环排列
//        int a =122 - 97 ;
        int num = 0;


        String smallestString =new String();
        for (int i = 0; i < s.length(); i++) {
            smallestString += "a";
        }
        for (int i = 0; i < s.length(); i++) {

            System.out.println(distance(smallestString, s));
//            char c = s.charAt(i);
//            int num1 = c ;
//            // todo 确定要小于什么数
//            while (distance(smallestString,s)>k){
//                if (num1 > 97){
//                    num1 -- ;
//                }
//              s = s.substring(0,i)+Character.toString(num1) + s.substring(i+1);
//            }
        }
        System.out.println(s);




        return null;
    }

    /**
     * 计算两个字符串之间的距离
     * @param s1 字符串1
     * @param s2 字符串2
     * @return 距离值
     */
    public static int distance(String s1,String s2){
        int num = 0;
        for (int i = 0; i < s1.length(); i++) {
            char c1 = s1.charAt(i);
            char c2 = s2.charAt(i);
            int num1 = c1;
            int num2 = c2;

            num += Math.abs(num1 - num2 ) < Math.abs(Math.abs(num1 - num2 )-24) ? Math.abs(num1 - num2 ):Math.abs(Math.abs(num1 - num2 )-24) ;
        }
        return num ;
    }

    @Test
    public void test1(){
        int distance = distance("ab", "cd");
//        int distance1= distance("a", "z");
        System.out.println(distance);
//        System.out.println(distance1);
    }
}

